if (!extension)
return false;
- // Try to disable it -- if it's ERROR'd, we can't guarantee that,
- // but it will be removed on next reboot, and hopefully nothing
- // broke too much.
- ExtensionSystem.disableExtension(uuid);
-
// Don't try to uninstall system extensions
if (extension.type != ExtensionUtils.ExtensionType.PER_USER)
return false;
- extension.state = ExtensionSystem.ExtensionState.UNINSTALLED;
- _signals.emit('extension-state-changed', extension);
-
- delete ExtensionUtils.extensions[uuid];
-
- FileUtils.recursivelyDeleteDir(Gio.file_new_for_path(extension.path));
+ if (!ExtensionSystem.unloadExtension(uuid))
+ return false;
+ FileUtils.recursivelyDeleteDir(extension.dir);
return true;
}
_signals.emit('extension-state-changed', extension);
}
+function unloadExtension(uuid) {
+ let extension = ExtensionUtils.extensions[uuid];
+ if (!extension)
+ return false;
+
+ // Try to disable it -- if it's ERROR'd, we can't guarantee that,
+ // but it will be removed on next reboot, and hopefully nothing
+ // broke too much.
+ disableExtension(uuid);
+
+ extension.state = ExtensionState.UNINSTALLED;
+ _signals.emit('extension-state-changed', extension);
+
+ delete ExtensionUtils.extensions[uuid];
+ return true;
+}
+
function initExtension(uuid) {
let extension = ExtensionUtils.extensions[uuid];
let dir = extension.dir;